# -*- coding: utf-8 -*-
"""
@文件    :   Excel_filter.py
@时间    :   2022/05/24 15:55:27
@作者    :   YTNetMan
@版本    :   1.0
@邮箱    :   ytnetman@163.com
@版权    :   (C)Copyright 2022-2025
@分类    :   办公自动化
@功能    :   筛选出符合条件的记录
            了解loc[]定位属性的使用和apply()调用函数及匿名函数的方法
"""

import openpyxl
import pandas as pd

students = pd.read_excel('./doc/students.xlsx', index_col='ID')
#实现： 预定义两个条件函数，用来给apply()方法调用
def age_18_to_30(a):
    return 18 <= a < 30
def level_a(s):
    return 85 < s <= 100
students = students.loc[students['Age'].apply(age_18_to_30)]
students = students.loc[students['Score'].apply(level_a)]
print(students)
#改进1：不定义函数，直接用匿名函数完成
#对于太长的一行代码，可以用'空格+\回车'来换行，不会出错
students = students.loc[students['Age'].apply(lambda a: 18<=a<30)] \
.loc[students['Score'].apply(lambda s: 85<s<=100)]
print(students)
#改进2： students['Age'] 和 students.Age 是一样的，所以也可以写成
students = students.loc[students.Age.apply(lambda a: 18<=a<30)] \
.loc[students.Score.apply(lambda s: 85<s<=100)]
print(students)
